﻿using System.Reflection;
using System.Threading.Tasks;

namespace Sharp.Infrastructure.Interfaces
{
    public interface IBootstrapPlugin
    {
        /// <summary>
        /// 启动程序
        /// </summary>
        Assembly[] StartupAssembles { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        /// <remarks>越大越优先</remarks>
        int Order { get; set; }
        /// <summary>
        /// 初始化
        /// </summary>
        void Initialize();
        /// <summary>
        /// 初始化
        /// </summary>
        Task InitializeAsync();
        bool IsAlready { get; set; }
    }
}